package com.yunxi.order.service;

import com.github.pagehelper.PageInfo;
import com.yunxi.core.web.ApiResult;
import com.yunxi.core.web.LoginInfo;
import com.yunxi.hubToBiz.pojo.CancelVOAPP;
import com.yunxi.hubToBiz.pojo.OrderActualSalesRespVO;
import com.yunxi.order.pojo.OrderCustomerExOrderOemSaveReqVO;
import com.yunxi.order.pojo.OrderCustomerVO;

import java.lang.reflect.InvocationTargetException;
import java.util.List;

/**
 * <p>
 * 零售订单 服务类
 * </p>
 *
 * @author
 * @since 2019-05-29
 */
public interface OrderCustomerDubboService {

   OrderCustomerVO getById(String id) throws InvocationTargetException, IllegalAccessException;

   void removeById(String id);

   PageInfo<OrderCustomerVO> findPageByVO(OrderCustomerVO orderCustomerVO, Integer pageNum, Integer pageSize,LoginInfo loginInfo) throws InvocationTargetException, IllegalAccessException;

   void removeByListVo(List<OrderCustomerVO> orderCustomerVOList) throws IllegalAccessException, InvocationTargetException, InstantiationException;

   OrderCustomerVO load(String orderNo);

   ApiResult updateByListVo(List<OrderCustomerVO> orderCustomerVOList) throws IllegalAccessException, InvocationTargetException, InstantiationException;

   ApiResult save(OrderCustomerVO orderCustomerVO ,LoginInfo loginInfo) throws Exception;

   ApiResult update(OrderCustomerVO orderCustomerVO,LoginInfo loginInfo) throws IllegalAccessException;

   List listByVo(OrderCustomerVO v , LoginInfo loginInfo)throws Exception;

   PageInfo<OrderCustomerExOrderOemSaveReqVO> convertGroupList(Integer pageNum, Integer pageSize,String partnerCode);

   ApiResult assignCar(OrderCustomerVO orderCustomerVO, LoginInfo loginInfo) throws Exception;

   ApiResult convertBatch(OrderCustomerExOrderOemSaveReqVO v, LoginInfo loginInfo);

   List<String> getCustomerNo(OrderCustomerExOrderOemSaveReqVO v);

    ApiResult cancelApply(CancelVOAPP cancelVOAPP) throws Exception;

   ApiResult cancelApplyPC(OrderCustomerVO orderCustomerVO,LoginInfo loginInfo) throws Exception;

   ApiResult cancelAuditAgree(OrderCustomerVO v, LoginInfo loginInfo) throws InvocationTargetException, IllegalAccessException;

   void relateOrderVehicle(OrderCustomerVO v, LoginInfo loginInfo);

   List<OrderCustomerVO> allList(OrderCustomerVO orderCustomerVO,LoginInfo loginInfo)throws Exception;

   void updateBatch(List<OrderCustomerVO> orderCustomerVOList) throws IllegalAccessException, InvocationTargetException, InstantiationException;

   List listAllByCustomerNo(OrderCustomerVO v, LoginInfo loginInfo);

   ApiResult unbindCar(OrderCustomerVO orderCustomerVO, LoginInfo loginInfo);

   @Deprecated
   ApiResult assignPartner(List<OrderCustomerVO> orderCustomerVOList, LoginInfo loginInfo) throws Exception;

   void updateDeliveryInfo(OrderCustomerVO v, LoginInfo loginInfo) throws Exception;

   ApiResult receiveApp2(com.yunxi.hubToBiz.pojo.OrderCustomerVO appOrderCustomerVO) throws Exception;

   PageInfo<OrderCustomerVO> cancelPageWait(OrderCustomerVO v, Integer pageNum,Integer pageSize, LoginInfo loginInfo);

   ApiResult cancelAuditNext(OrderCustomerVO v, LoginInfo loginInfo) throws InvocationTargetException, IllegalAccessException;

   List<OrderActualSalesRespVO> listByVinAndCity(OrderCustomerVO vo);

    ApiResult xiaoqu2app(OrderCustomerVO v, LoginInfo loginInfo) throws InvocationTargetException, IllegalAccessException;

    ApiResult autoNext(OrderCustomerVO v, LoginInfo loginInfo) throws InvocationTargetException, IllegalAccessException;

   ApiResult cancelApplyApp(CancelVOAPP cancelVOAPP) throws Exception;

   ApiResult loadByOrderCustomerNo(String orderCustomerNo);

   OrderCustomerVO getByOrderCustomerNo(String orderCustomerNo);

   ApiResult refundCar(OrderCustomerVO v, LoginInfo loginInfo) throws Exception;

   /**
    * 渠道商入库 更新零售订单vin
    * @param vin
    * @return
    */
   void updateVin(String vin) throws InvocationTargetException, IllegalAccessException;

   void updateByOrderCustomerNo(String busSubId);

   void hire(String orderCustomerNo, String vin) throws Exception;

   void revert(String orderCarId) throws Exception;

   void cancel(String vin) throws Exception;

   ApiResult sendOrderStatus2App(OrderCustomerVO orderCustomerVO,String rpname,String stCode);

   ApiResult pms2appOnly(String orderCustomerNo,Integer result,boolean isEnd);

    ApiResult exportOrder(OrderCustomerVO orderCustomerVO,LoginInfo loginInfo);
}
